#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
PE估值分析系统演示脚本
基于《如何用正态分布的思路，去判断公司市盈率高低》实现
"""

from pe_analysis_system import PEAnalysisSystem
import pandas as pd
import numpy as np

def demo_single_stock():
    """演示单只股票分析"""
    print("="*60)
    print("PE估值分析系统演示")
    print("基于《如何用正态分布的思路，去判断公司市盈率高低》")
    print("="*60)
    
    # 创建分析器
    analyzer = PEAnalysisSystem()
    
    # 演示股票：招商银行（盈利稳定的银行股）
    stock_code = "600036"
    
    print(f"\n正在分析股票: {stock_code}")
    print("-" * 40)
    
    try:
        # 运行完整分析
        success = analyzer.run_complete_analysis(stock_code, start_date="20200101")
        
        if success:
            print("\n" + "="*50)
            print("分析结果摘要")
            print("="*50)
            print(analyzer.get_analysis_summary())
            
            # 显示详细的PE分析
            results = analyzer.analysis_results
            
            print("\n" + "="*50)
            print("详细PE分析")
            print("="*50)
            
            # 估值区间分析
            current_pe = results['current_pe']
            pe_mean = results['pe_mean']
            pe_std = results['pe_std']
            
            print(f"当前PE: {current_pe:.2f}")
            print(f"历史均值: {pe_mean:.2f}")
            print(f"标准差: {pe_std:.2f}")
            print(f"当前分位数: {results['current_percentile']:.1f}%")
            
            # 投资建议
            print("\n投资建议分析:")
            if current_pe <= results['extreme_low']:
                print("🟢 极度低估 - 历史罕见的投资机会")
                print("   建议: 重点关注，可能是绝佳买入时机")
            elif current_pe <= results['low_line']:
                print("🟡 低估 - 相对安全的投资区间")
                print("   建议: 积极关注，适合价值投资者")
            elif current_pe <= results['high_line']:
                print("🔵 合理估值 - 需结合基本面判断")
                print("   建议: 中性观点，关注业绩增长")
            elif current_pe <= results['extreme_high']:
                print("🟠 高估 - 估值偏高需谨慎")
                print("   建议: 谨慎投资，等待回调")
            else:
                print("🔴 极度高估 - 泡沫风险较高")
                print("   建议: 规避风险，寻找其他机会")
            
            # 风险提示
            print("\n风险提示:")
            print("1. PE分析仅为估值参考工具之一")
            print("2. 需结合公司基本面、行业前景等综合判断")
            print("3. 适用于盈利稳定的成熟公司")
            print("4. 不适用于高成长、周期性或亏损企业")
            
        else:
            print("分析失败，可能是网络问题或数据源问题")
            print("建议检查网络连接或稍后重试")
    
    except Exception as e:
        print(f"演示过程中出错: {e}")

def demo_multiple_stocks():
    """演示多只股票对比分析"""
    print("\n" + "="*60)
    print("多股票对比分析演示")
    print("="*60)
    
    # 选择不同行业的代表性股票
    stocks = {
        "600519": "贵州茅台",  # 白酒
        "600036": "招商银行",  # 银行
        "000858": "五粮液",   # 白酒
        "600900": "长江电力"   # 电力
    }
    
    results_summary = []
    
    for code, name in stocks.items():
        print(f"\n分析 {name} ({code})...")
        
        analyzer = PEAnalysisSystem()
        
        try:
            # 简化分析（使用较短时间范围以提高速度）
            success = analyzer.run_complete_analysis(code, start_date="20220101")
            
            if success:
                results = analyzer.analysis_results
                
                # 估值判断
                current_pe = results['current_pe']
                if current_pe <= results['extreme_low']:
                    valuation = "极度低估"
                elif current_pe <= results['low_line']:
                    valuation = "低估"
                elif current_pe <= results['high_line']:
                    valuation = "合理"
                elif current_pe <= results['extreme_high']:
                    valuation = "高估"
                else:
                    valuation = "极度高估"
                
                results_summary.append({
                    '股票代码': code,
                    '股票名称': name,
                    '当前PE': f"{current_pe:.2f}",
                    '历史均值': f"{results['pe_mean']:.2f}",
                    '当前分位数': f"{results['current_percentile']:.1f}%",
                    '估值判断': valuation
                })
                
                print(f"  当前PE: {current_pe:.2f}")
                print(f"  估值判断: {valuation}")
            else:
                print(f"  {name} 分析失败")
        
        except Exception as e:
            print(f"  {name} 分析出错: {e}")
    
    # 显示对比结果
    if results_summary:
        print("\n" + "="*80)
        print("多股票PE估值对比结果")
        print("="*80)
        
        df = pd.DataFrame(results_summary)
        print(df.to_string(index=False))
        
        print("\n投资建议:")
        print("1. 优先关注'低估'和'极度低估'的股票")
        print("2. '合理'估值的股票需结合基本面分析")
        print("3. '高估'和'极度高估'的股票建议谨慎")

def demo_interactive():
    """交互式演示"""
    print("\n" + "="*60)
    print("交互式PE分析演示")
    print("="*60)
    
    while True:
        print("\n请选择操作:")
        print("1. 分析单只股票")
        print("2. 查看系统说明")
        print("3. 退出")
        
        choice = input("\n请输入选择 (1-3): ").strip()
        
        if choice == '1':
            stock_code = input("请输入股票代码 (如 600519): ").strip()
            if stock_code:
                analyzer = PEAnalysisSystem()
                try:
                    success = analyzer.run_complete_analysis(stock_code)
                    if success:
                        print(analyzer.get_analysis_summary())
                    else:
                        print("分析失败，请检查股票代码")
                except Exception as e:
                    print(f"分析出错: {e}")
        
        elif choice == '2':
            print("\n系统说明:")
            print("="*40)
            print("本系统基于《如何用正态分布的思路，去判断公司市盈率高低》理论实现")
            print("\n核心原理:")
            print("1. 获取股票历史PE数据")
            print("2. 计算PE的正态分布特征（均值、标准差）")
            print("3. 设定估值参考线进行判断")
            print("\n适用范围:")
            print("✓ 盈利稳定的成熟公司")
            print("✗ 高成长公司、周期性行业、亏损企业")
            print("\n参考线说明:")
            print("- 极度低估线: μ-2σ")
            print("- 低估线: μ-σ") 
            print("- 均值线: μ")
            print("- 高估线: μ+σ")
            print("- 极度高估线: μ+2σ")
        
        elif choice == '3':
            print("感谢使用PE估值分析系统！")
            break
        
        else:
            print("无效选择，请重新输入")

def main():
    """主演示函数"""
    print("PE估值分析系统")
    print("基于正态分布的股票估值分析工具")
    
    # 1. 单股票演示
    demo_single_stock()
    
    # 2. 多股票对比演示
    input("\n按回车键继续多股票对比演示...")
    demo_multiple_stocks()
    
    # 3. 交互式演示
    input("\n按回车键进入交互式演示...")
    demo_interactive()

if __name__ == "__main__":
    main()
